const api = require('../../../utils/api')

Page({
  data: {
    products: [],
    keyword: '',
    page: 1,
    size: 10,
    hasMore: true,
    loading: false
  },

  onLoad() {
    // 检查商家登录状态
    const merchantToken = wx.getStorageSync('merchant_token');
    if (!merchantToken) {
      wx.showToast({
        title: '请先登录商家账号',
        icon: 'none',
        duration: 2000
      });
      setTimeout(() => {
        wx.navigateTo({
          url: '/pages/admin/login/login'
        });
      }, 2000);
      return;
    }
    this.loadProducts();
  },

  onShow() {
    // 每次页面显示时刷新商品列表
    this.setData({
      page: 1,
      products: [],
      hasMore: true
    }, () => {
      this.loadProducts()
    })
  },

  // 搜索输入
  onSearchInput(e) {
    this.setData({
      keyword: e.detail.value
    })
  },

  // 执行搜索
  onSearch() {
    this.setData({
      page: 1,
      products: [],
      hasMore: true
    }, () => {
      this.loadProducts()
    })
  },

  // 加载商品列表
  async loadProducts(isLoadMore = false) {
    if (this.data.loading) return

    try {
      this.setData({ loading: true })
      const page = isLoadMore ? this.data.page + 1 : 1
      const res = await api.getProducts({
        page,
        size: this.data.size,
        keyword: this.data.keyword
      })

      if (res.success) {
        // 处理返回的数据，兼容不同的返回格式
        const productList = Array.isArray(res.data) ? res.data : 
                          (res.data.content || res.data.list || [])
        
        // 处理图片URL，确保包含完整域名
        const products = productList.map(product => ({
          ...product,
          imageUrl: product.imageUrl || '',  // 防止imageUrl为null
          price: product.price ? Number(product.price).toFixed(2) : '0.00'  // 格式化价格显示
        }))

        console.log('处理后的商品数据:', products)  // 添加日志便于调试

        this.setData({
          products: isLoadMore ? [...this.data.products, ...products] : products,
          page,
          hasMore: products.length === this.data.size,
          loading: false
        })
      } else {
        wx.showToast({
          title: res.message || '加载失败',
          icon: 'none'
        })
        this.setData({ loading: false })
      }
    } catch (error) {
      console.error('加载商品列表失败:', error)
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      })
      this.setData({ loading: false })
    }
  },

  // 加载更多
  loadMore() {
    if (this.data.hasMore && !this.data.loading) {
      this.loadProducts(true)
    }
  },

  // 跳转到添加商品页面
  goToAdd() {
    wx.navigateTo({
      url: '/pages/admin/product/edit'
    })
  },

  // 跳转到编辑商品页面
  goToEdit(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/admin/product/edit?id=${id}`
    })
  },

  // 切换商品状态
  async toggleStatus(e) {
    const id = e.currentTarget.dataset.id
    const currentStatus = e.currentTarget.dataset.status
    const newStatus = currentStatus === 1 ? 0 : 1

    wx.showModal({
      title: '确认',
      content: `确定要${newStatus === 1 ? '上架' : '下架'}该商品吗？`,
      success: async (res) => {
        if (res.confirm) {
          try {
            wx.showLoading({
              title: '处理中...',
              mask: true
            })

            const res = await api.updateProductStatus(id, newStatus)
            if (res.success) {
              // 立即更新当前列表中的商品状态
              const products = this.data.products.map(item => {
                if (item.id === id) {
                  return {
                    ...item,
                    status: newStatus
                  }
                }
                return item
              })

              this.setData({ products })

              wx.showToast({
                title: '操作成功',
                icon: 'success'
              })
            } else {
              wx.showToast({
                title: res.message || '操作失败',
                icon: 'none'
              })
            }
          } catch (error) {
            console.error('更新商品状态失败:', error)
            wx.showToast({
              title: '操作失败',
              icon: 'none'
            })
          } finally {
            wx.hideLoading()
          }
        }
      }
    })
  },

  // 更新展示设置
  updateDisplay(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/admin/product/display?id=${id}`
    })
  },

  onImageError(e) {
    const index = e.currentTarget.dataset.index;
    const products = this.data.products;
    products[index].imageUrl = '/images/default-product.png';  // 设置默认图片
    this.setData({
      products
    });
  },

  // 删除商品
  deleteProduct(e) {
    const id = e.currentTarget.dataset.id
    wx.showModal({
      title: '确认删除',
      content: '确定要删除该商品吗？删除后无法恢复',
      success: async (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '删除中...',
            mask: true
          })
          
          try {
            const res = await api.deleteProduct(id)
            if (res.success) {
              // 从列表中移除该商品
              const products = this.data.products.filter(item => item.id !== id)
              this.setData({ products })

              wx.showToast({
                title: '删除成功',
                icon: 'success'
              })
            } else {
              wx.showToast({
                title: res.message || '删除失败',
                icon: 'none'
              })
            }
          } catch (error) {
            console.error('删除商品失败:', error)
            wx.showToast({
              title: '删除失败',
              icon: 'none'
            })
          } finally {
            wx.hideLoading()
          }
        }
      }
    })
  },
}) 